package buffer;

public interface Source<T> {

	/**
	 * Provides true when the result of this.get() does not change.
	 * @return true when the result of this.get() does not change. Else returns false.
	 */
	boolean isConstant();
	
	/**
	 * Provides the value from the bottom of this source.
	 * If there is no value in this buffer, waits until a value is put inside this source.
	 * The value that is returned is removed from this source.
	 * @return the value from the bottom of this source.
	 */
	T get();
}
